/***************************************************************************************************
  Copyright(C)   2011-8-24
  All rights reserved.
  File Name: scrolllabel.h

  Description:滚动文件Label模块,设置好想要的显示的文件和logo,然后start()可以看见效果了，
              可以改变字体的大小，滚动的速度(1~99),滚动的方式(垂直滚动和水平滚动)

  ***************************************************************************************************/



#ifndef SCROLLLABEL_H
#define SCROLLLABEL_H

#include <QLabel>
#include <QPainter>
#include <QTimerEvent>
#include <QShowEvent>
#include <QFont>
#include <QApplication>
#include <QPixmap>
#include <QTimer>
#include <QRect>
#include <QDesktopWidget>

#include "configclass.h"

typedef enum
{
    HORIZONTALSCROLL,
    VERTICALSCROLL
} SCROLLTYPE;


class ScrollLabel : public QLabel
{
    Q_OBJECT
public:
    explicit ScrollLabel(uint number = 0, QWidget *parent = 0);

    void setOnlyShowTxt(bool isOnlyShowTxt, const QString& txt = "");

    bool start();                                   //开始滚动
    void setRect(int ax, int ay, int aw, int ah);
    void setRect(QRect rect);
    void hide();
    void show();

    int setPartitionID(const int partitionID);


    //如果想要它滚动一定的时间，用以下的接口
    bool start(int inval);
    bool stop();                                    //停止滚动

//    void setText(const QString &);                  //设置想要显示的文字
    void setScrollText(const QString &);                  //设置想要显示的文字

    //设置颜色
    void setWordColor(const int red, const int green, const int blue);
    void setBGColor(const int red, const int green, const int blue);

    void setLogoPath(const QString &);              //设置想要显示的logo图片

    void setFontWidth(int iFontWidth);              //设置字体大小
    void setScrollSpeed(int iSpeed);                //设置滚动速度,限制1~~99
    void setScrollType(SCROLLTYPE emScrollType);    //设置滚动的类型，一般有水平滚动和垂直滚动

    void clearLogo();                               //去除已有的logo
    void setDefaultSetting();                       //设置默认参数


    QString text() const;
    QSize sizeHint() const;


protected:
    void paintEvent(QPaintEvent *);
    void timerEvent(QTimerEvent *);
    void showEvent(QShowEvent *);
    void hideEvent(QHideEvent *);

private:
    QString mScrollText;            //当前正在滚动的文字
    QString mRetainText;            //设置新的文字
    QFont mFont;
    QPen mPen;
    QStringList textList;
    QColor  m_BGColor;      //背景颜色

    uint mNumber;
    int mOffset;
    int mTimeId;
    int mSpeed;
    int mInterval;
    int mLogoWidth;

    int mShowWordCount;
    QTimer *timer;
    QTimer *scrollTimer;
    int timeSize;

    SCROLLTYPE mScrollType;

    QImage mLogoImg;
    QSize msize;
    QRect m_rect;
    bool isHide;

    int m_partitiodID;
    int m_isOnlyShowTxt;        //是否只是显示文字，滚动功能去除

signals:
    void playFinish(uint typeID, uint number, long msg = 0);

private slots:
    void playTimeOutSlot();

    void scrollText();



};

#endif // SCROLLLABEL_H
